package net.sf.eclipsefp.haskell.core.util; import java.util.regex.Pattern; import net.sf.eclipsefp.haskell.util.PlatformUtil; /** * GHCi syntax strings, for parsing answers * @author JP Moresmau * */ public class GHCiSyntax { public static final Pattern BREAKPOINT_SET_PATTERN=Pattern.compile( "Breakpoint (\\d+) activated at (.+)$",Pattern.MULTILINE); //$NON-NLS-1$ public static final Pattern BREAKPOINT_STOP_PATTERN=Pattern.compile( "Stopped at (.+)$",Pattern.MULTILINE); //$NON-NLS-1$ public static final Pattern BREAKPOINT_LOCATION_PATTERN=Pattern.compile( "(.+)\\:(\\d+)\\:(\\d+)\\-(\\d+)"); //$NON-NLS-1$ public static final Pattern BREAKPOINT_LOCATION_NOEND_PATTERN=Pattern.compile( "(.+)\\:(\\d+)\\:(\\d+)"); //$NON-NLS-1$ public static final Pattern BREAKPOINT_LOCATIONMULTILINE_PATTERN=Pattern.compile( "(.+)\\:\\((\\d+),(\\d+)\\)\\-\\((\\d+),(\\d+)\\)");//$NON-NLS-1$ public static final Pattern BINDING_PATTERN=Pattern.compile("(.+)\\s+\\:\\:([^\\=]+)( \\= (.+))?",Pattern.MULTILINE | Pattern.DOTALL); //$NON-NLS-1$ public static final Pattern CONTEXT_PATTERN=Pattern.compile("--> (.+)$",Pattern.MULTILINE); //$NON-NLS-1$ public static final Pattern BREAKPOINT_NOT=Pattern.compile("not stopped at a breakpoint$",Pattern.MULTILINE); //$NON-NLS-1$ public static final String UNRESOLVED="_"; //$NON-NLS-1$ public static final String CONTINUE_COMMAND=":continue"; //$NON-NLS-1$ public static final String QUIT_COMMAND=":q"; //$NON-NLS-1$ public static final String DELETE_ALL_BREAKPOINTS_COMMAND=":delete *"; //$NON-NLS-1$ public static final String SHOW_BINDINGS_COMMAND=":show bindings"; //$NON-NLS-1$ public static final String SHOW_CONTEXT_COMMAND=":show context"; //$NON-NLS-1$ public static final String TYPE_LAST_RESULT_COMMAND=":t it"; //$NON-NLS-1$ public static final String STEP_COMMAND=":step"; //$NON-NLS-1$ public static final String HIST_COMMAND=":hist"; //$NON-NLS-1$ public static final Pattern HIST_LOCATION_PATTERN=Pattern.compile( "\\-(\\d+)\\s+\\:\\s+(.+)\\s+\\((.+)\\:(\\d+)\\:(\\d+)\\-(\\d+)\\)"); //$NON-NLS-1$ public static final Pattern HIST_LOCATIONMULTILINE_PATTERN=Pattern.compile( "\\-(\\d+)\\s+\\:\\s+(.+)\\s+\\((.+)\\:\\((\\d+),(\\d+)\\)\\-\\((\\d+),(\\d+)\\)\\)");//$NON-NLS-1$ public static final String SET_PRINT_WITH_SHOW_COMMAND=":set -fprint-evld-with-show"; //$NON-NLS-1$ public static final String SET_BREAK_ON_ERROR_COMMAND=":set -fbreak-on-error"; //$NON-NLS-1$ public static final String SET_BREAK_ON_EXCEPTION_COMMAND=":set -fbreak-on-exception"; //$NON-NLS-1$ public static final String PROMPT_END="> "; //$NON-NLS-1$ public static final String TYPEOF="::"; //$NON-NLS-1$ public static final String UNIT="()"; //$NON-NLS-1$ public static final String IGNORING_BREAKPOINT="*** Ignoring breakpoint"+PlatformUtil.NL;//$NON-NLS-1$ public static String addModuleCommand(final String module){ return ":add *" +module; //$NON-NLS-1$ } public static String loadModuleCommand(final String module){ return ":load *" +module; //$NON-NLS-1$ } public static String setBreakpointCommand(final String module, final int lineNumber){ return ":break " +module+" "+ lineNumber; //$NON-NLS-1$//$NON-NLS-2$ } public static String deleteBreakpointCommand(final int breakpointNumber){ return ":delete " + breakpointNumber; //$NON-NLS-1$ } public static String forceVariableCommand(final String name){ return ":force " + name; //$NON-NLS-1$ } public static String formatType(final String type){ String newType=type.replaceAll( PlatformUtil.NL, "" ); //$NON-NLS-1$ newType=newType.replaceAll(" ",""); //$NON-NLS-1$ //$NON-NLS-2$ return newType.trim(); } }