package org.intellij.grammar.expression; import com.intellij.lang.ASTNode; import com.intellij.psi.PsiFile; import com.intellij.psi.impl.DebugUtil; import org.intellij.grammar.LightPsi; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * @author greg */ public class Main { public static void main(String[] args) throws Exception { try { runConsole(); } catch (Throwable throwable) { throwable.printStackTrace(); } finally { System.exit(0); } } private static void runConsole() throws IOException { System.out.println("Welcome to interactive expression console"); System.out.print("> "); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String s; while((s = in.readLine()) != null) { dump(s, false); System.out.print("> "); } } private static void dump(String text, boolean usePsi) { ExpressionParserDefinition parserDefinition = new ExpressionParserDefinition(); String treeDump; if (usePsi) { PsiFile psiFile = LightPsi.parseFile("a.expr", text, parserDefinition); treeDump = DebugUtil.psiToString(psiFile, false); } else { ASTNode astNode = LightPsi.parseText(text, parserDefinition); treeDump = DebugUtil.nodeTreeToString(astNode, true); } treeDump = treeDump.replaceAll("\\w*\\(((?:[^)]|'\\)')*)\\)", "$1 "); System.out.println(treeDump); } }